在 Part 1 我們優化了背景限制取消流程以後,這兩天筆者觀察到:
電池最佳化
關閉以後,偵測的提醒在開啟後不再出現針對第二點,推測即使在背景不受限制,然而有時候筆者會用關閉所有 app
的功能,如圖:
可能是在這個時候我們的 app 被 kill 掉,根據官方文件:
Android devices can restrict your app while it's in the background to preserve battery life. This can prevent trigger notifications from being displayed.
我們可以推論 app 必須常駐在背景,手動 kill 掉
跟系統 kill 掉
的效果是一樣的。
筆者預期讓他保持開啟就可以正常運作~
找到了這篇 Reddit 討論 Samsung 電源管理的兩種模式:永不進入休眠 & 最佳化關閉(不受限制)
。
其中這串留言提到:「不受限制
意味著 Android 系統以及三星本身的電池優化機制,都不能干擾此 app 的電池用量。」
如果這個留言所言如實,那麼我們前幾天讓 app 進入永不休眠的名單,Notifee 偵測到 Optimization 仍然為 true
的現象就說得通了:
同時也會驗證了筆者的推論,「理論上」我們只要不要手動 kill,app 就會一直在背景。
預期操作如下:
長按 app 圖示開啟選單:
看到畫面右下角出現一個鎖,就會變成關閉全部 app
的例外:
這邊甚至建議我們把其他電池管理機制都關掉:
We strongly suggest to turn off Adaptive battery and Put apps to sleep options per instructions below.
在連結頁面的底下,有分享要如何關閉這些設定的教學。然而筆者並未採用這些建議,理由是:
不受最佳化限制
以後,通知除今天晚上外,都有正常出現,推測只要讓他在背景保持開啟就沒問題了。Android 11
,並非筆者目前所使用的 12。移除掉不常用 app 的權限
,如下圖。筆者擔心若關閉了這些設定,反而會導致一些非預期情形出現。重複通知的 bug,筆者昨天重新 build 安裝在實體機後,早上確認通知的數目只有一篇,我們可以說初步已排除了。
電池最佳化無法取消的 bug,理論上只要我們維持 app 開啟就可以收到通知,雖然還未完全排除,但於此也算是到一個段落。
筆者先預告明天是本系列的最後一篇。
今天收工!